package com.jinunn.system.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jinunn.system.entity.Role;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jinunn.system.model.params.RoleMenusParam;
import com.jinunn.system.model.params.RoleParam;
import com.jinunn.system.model.query.RolePageQuery;
import com.jinunn.system.model.vo.role.RolePageVO;

import java.util.List;
import java.util.Set;

/**
 * <p>
 * 角色表 服务类
 * </p>
 *
 * @author JIN
 * @since 2024-07-11
 */
public interface RoleService extends IService<Role> {

    /**
     * 获取最大范围的数据权限
     *
     * @param roles 角色信息
     * @return 最大权限
     */
    Integer getMaximumDataScope(Set<String> roles);

    /**
     * 分页列表
     *
     * @param queryParams 查询参数
     * @return {@link RolePageVO}
     */
    Page<RolePageVO> getPage(RolePageQuery queryParams);

    /**
     * 新增
     *
     * @param roleForm 表单数据
     * @return boolean
     */
    boolean saveRole(RoleParam roleForm);

    /**
     * 编辑
     *
     * @param roleForm 表单数据
     * @return boolean
     */
    boolean editRole(RoleParam roleForm);

    /**
     * 批量删除角色
     *
     * @param id 角色Id
     * @return boolean
     */
    boolean deleteRole(Long id);

    /**
     * 修改角色的资源权限
     *
     * @param param 分配信息
     * @return boolean
     */
    boolean assignMenusToRole(RoleMenusParam param);
}
